package entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * Articolo da acquistare per conto di un iscritto a un annuncio
 * @author ale
 */
@Entity
public class Articolo implements Serializable {
    
    /**
     * Stato dell'articolo
     */
    public enum Stato {
        /**
         * articolo rifiutato dal creatore dell'annuncio (o non ancora valutato alla chiusura dell'annuncio)
         */
        RIFIUTATO,
        /**
         * il creatore non ha ancora valutato l'articolo (default)
         */
        IN_SOSPESO,
        /**
         * articolo accettato dal creatore dell'annuncio
         */
        ACCETTATO
    }

    /**
     * url della pagina in cui si può acquistare l'articolo
     */
    protected String url;
    /**
     * prezzo dell'articolo
     */
    protected float prezzo;
    /**
     * stato dell'articolo (in sospeso, accettato, rifiutato)
     */
    protected Stato stato;
    /**
     * eventuali note che l'iscritto specifica per l'articolo (ad esempio per un vestito, il colore o la taglia)
     */
    protected String descrizione;
    
    /**
     * Get the value of stato
     *
     * @return the value of stato
     */
    public Stato getStato() {
        return stato;
    }

    /**
     * Set the value of stato
     *
     * @param stato new value of stato
     */
    public void setStato(Stato stato) {
        this.stato = stato;
    }

    /**
     * Get the value of prezzo
     *
     * @return the value of prezzo
     */
    public float getPrezzo() {
        return prezzo;
    }

    /**
     * Set the value of prezzo
     *
     * @param prezzo new value of prezzo
     */
    public void setPrezzo(float prezzo) {
        this.prezzo = prezzo;
    }

    /**
     * Get the value of descrizione
     *
     * @return the value of descrizione
     */
    public String getDescrizione() {
        return descrizione;
    }

    /**
     * Set the value of descrizione
     *
     * @param descrizione new value of descrizione
     */
    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    /**
     * Get the value of url
     *
     * @return the value of url
     */
    public String getUrl() {
        return url;
    }

    /**
     * Set the value of url
     *
     * @param url new value of url
     */
    public void setUrl(String url) {
        this.url = url;
    }

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    /**
     * Recupera l'id dell'articolo
     * @return l'id dell'articolo
     */
    public Long getId() {
        return id;
    }

    /**
     * Imposta l'id dell'articolo
     * @param id l'id dell'articolo
     */
    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Articolo)) {
            return false;
        }
        Articolo other = (Articolo) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entity.Articolo[ id=" + id + " ]";
    }
    
}
